
package com.svh.Servicios;

import com.svh.Dao.EmpleadoDao;
import com.svh.Dao.Impl.EmpleadoDaoImpl;
import com.svh.Dao.Impl.TipoEmpleadoDaoImpl;
import com.svh.Dao.Impl.UsuarioDaoImpl;
import com.svh.Dao.TipoEmpleadoDao;
import com.svh.Dao.UsuarioDao;
import com.svh.Entidad.Empleado;
import com.svh.Entidad.TipoEmpleado;
import com.svh.Entidad.Usuario;
import com.svh.Hibernate.HibernateConexion;
import com.svh.Utils.IConexion;
import com.svh.Utils.Utilitario;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Luis Alonso Ballena Garcia
 */
public class EmpleadoServicio {

    private final TipoEmpleadoDao daoTipoEmpleado;
    private final EmpleadoDao daoEmpleado;
    private final UsuarioDao daoUsuario;
    private final IConexion conexion;

    public EmpleadoServicio() {
        conexion = new HibernateConexion();
        daoEmpleado = new EmpleadoDaoImpl(conexion);
        daoTipoEmpleado = new TipoEmpleadoDaoImpl(conexion);
        daoUsuario = new UsuarioDaoImpl(conexion);
    }

    public List<TipoEmpleado> obtenerTiposEmpleados() {
        conexion.beginConexion();
        List<TipoEmpleado> auxTipo = new ArrayList<TipoEmpleado>();
        auxTipo = daoTipoEmpleado.obtenerTodos(TipoEmpleado.class);
        conexion.closeConexion();
        return auxTipo;
    }

    public Empleado obtenerEmpleadoporid(Integer id) {
        Empleado auxEmpleado = null;
        conexion.beginConexion();
        auxEmpleado = (Empleado) daoEmpleado.buscarPorId(Empleado.class, id);
        auxEmpleado.getTipo().getId();

        conexion.closeConexion();
        return auxEmpleado;
    }

    public List<Usuario> obtenerUsuarios() {
        conexion.beginConexion();
        List<Usuario> auxTipo = new ArrayList<Usuario>();
        auxTipo = daoUsuario.obtenerTodos(Usuario.class);
        conexion.closeConexion();
        return auxTipo;
    }

    public Usuario obtenerUsuariosid(Integer id) {

        Usuario auxUsuario = null;
        conexion.beginConexion();
        auxUsuario = (Usuario) daoUsuario.buscarPorId(Usuario.class, id);
        auxUsuario.getPerfil().getId();
        auxUsuario.getLocal().getId();
        conexion.closeConexion();
        return auxUsuario;
    }

    public void regEmpleados(Empleado empleado) {
        conexion.beginTransaccion();
        daoEmpleado.agregar(empleado);
        Utilitario.enviarMensajeGlobalValido("Se ha registrado correctamente");
        conexion.closeTransaccion();

    }
    
    public void actEmpleado(Empleado empleado) {
        conexion.beginTransaccion();
        daoEmpleado.actualizar(empleado);
        Utilitario.enviarMensajeGlobalValido("Se ha actualizado correctamente");
        conexion.closeTransaccion();
    }
    
    public void actualizarEmpleado(Empleado empleado , String mensaje){
        conexion.beginTransaccion();
        daoEmpleado.actualizar(empleado);
        Utilitario.enviarMensajeGlobalValido(mensaje);
        conexion.closeTransaccion();
    }

    public void eliEmpleado(Empleado empleado) {
        conexion.beginTransaccion();
        daoEmpleado.eliminar(empleado);
        Utilitario.enviarMensajeGlobalValido("se elimino empleado*");
        conexion.closeTransaccion();
    }

    /**
     * VALIDACIONES *
     */
    /* private boolean Empleadovalido (Empleado empleado,Integer dniaux)  {
     boolean resultado = true; 
     if(!Utilitario.esNulo(dniaux)&& dniaux.equals(empleado.getDni)){
     resultado = true;
     }
     else
     if(daoEmpleado.obtUsuariopordni(empleado.getdni()!=null)){
     Utilitario.enviarMensajeGlobalError("Este dni ya está registrado");
     resultado = false;
     }
     return resultado;
     }
     public boolean empleadovalid(Empleado empleado,Integer dniaux ){
     conexion.beginConexion();
     boolean resultado=true;
     if(!Empleadovalido(empleado,dniaux)){ 
     resultado = false;
     }
     if(!resultado){
     conexion.closeConexion();
     }
     return resultado;
     }*/
}
